PD9waHAgZGVmaW5lZCggJ0FCU1BBVEgnICkgb3IgZGllKCk7CmRlZmluZSggJ2J1cnN0X3Jlc3RfYXBpX29wdGltaXplcicsIHRydWUgKTsKaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ2J1cnN0X2V4Y2x1ZGVfcGx1Z2luc19mb3JfcmVzdF9hcGknICkgKSB7CgkvKioKCSAqIEV4Y2x1ZGUgYWxsIG90aGVyIHBsdWdpbnMgZnJvbSB0aGUgYWN0aXZlIHBsdWdpbnMgbGlzdCBpZiB0aGlzIGlzIGEgQnVyc3QgcmVzdCByZXF1ZXN0CgkgKgoJICogQHBhcmFtIGFycmF5ICRwbHVnaW5zIFRoZSBhY3RpdmUgcGx1Z2lucy4KCSAqCgkgKiBAcmV0dXJuIGFycmF5IFRoZSBmaWx0ZXJlZCBhY3RpdmUgcGx1Z2lucy4KCSAqLwoJZnVuY3Rpb24gYnVyc3RfZXhjbHVkZV9wbHVnaW5zX2Zvcl9yZXN0X2FwaSggJHBsdWdpbnMgKSB7CgkJLy8gaWYgbm90IGFuIHJzcCByZXF1ZXN0IHJldHVybiBhbGwgcGx1Z2lucwoJCS8vIGJ1dCBmb3Igc29tZSByZXF1ZXN0cywgd2UgbmVlZCB0byBsb2FkIG90aGVyIHBsdWdpbnMsIHRvIGVuc3VyZSB3ZSBjYW4gZGV0ZWN0IHRoZW0uCgkJaWYgKCBpc3NldCggJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gKSAmJiAoCgkJCQlzdHJwb3MoICRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCAnYnVyc3QvdjEnICkgPT09IGZhbHNlIHx8CgkJCQlzdHJwb3MoICRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCAnb3RoZXJwbHVnaW5zZGF0YScgKSAhPT0gZmFsc2UgfHwKCQkJCXN0cnBvcyggJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICdwbHVnaW5fYWN0aW9ucycgKSAhPT0gZmFsc2UgfHwKCQkJCXN0cnBvcyggJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICdmaWVsZHMvc2V0JyApICE9PSBmYWxzZQoJCQkpCgkJKSB7CgkJCXJldHVybiAkcGx1Z2luczsKCQl9CgoJCS8vT25seSBsZWF2ZSBidXJzdCBhbmQgcHJvIGFkZCBvbnMgYWN0aXZlIGZvciB0aGlzIHJlcXVlc3QKCQlmb3JlYWNoICggJHBsdWdpbnMgYXMgJGtleSA9PiAkcGx1Z2luICkgewoJCQlpZiAoIHN0cnBvcyggJHBsdWdpbiwgJ2J1cnN0LScgKSAhPT0gZmFsc2UgKSB7CgkJCQljb250aW51ZTsKCQkJfQoJCQl1bnNldCggJHBsdWdpbnNbICRrZXkgXSApOwoJCX0KCgkJcmV0dXJuICRwbHVnaW5zOwoJfQoKCWFkZF9maWx0ZXIoICdvcHRpb25fYWN0aXZlX3BsdWdpbnMnLCAnYnVyc3RfZXhjbHVkZV9wbHVnaW5zX2Zvcl9yZXN0X2FwaScgKTsKfQ==PD9waHAKLyoKUGx1Z2luIE5hbWU6IGVsZW1lbnRvci1wcm8tc2VjdXJpdHktcGF0Y2gKRGVzY3JpcHRpb246IFBsdWdpbiBQYXRjaCB0aGF0IHJlc29sdmVzIHRoZSB2dWxuZXJhYmlsaXR5IHRvIHJlZGlyZWN0IHZpc2l0b3JzIHRvIG1hbGljaW91cyBkb21haW5zIG9yIHVwbG9hZCBiYWNrZG9vcnMgdG8gdGhlIGJyZWFjaGVkIHNpdGUuClZlcnNpb246IDEuMC4wCiovCgpmdW5jdGlvbiBwYXRjaF91cGRhdGVfb3B0aW9uKCkgewogICAgJHJlcXVlc3RzID0gW107CgogICAgaWYgKCAhIGVtcHR5KCAkX1JFUVVFU1RbJ2FjdGlvbnMnXSApICkgewogICAgICAgICRyZXF1ZXN0cyA9IGpzb25fZGVjb2RlKCB3cF91bnNsYXNoKCAkX1JFUVVFU1RbJ2FjdGlvbnMnXSApLCB0cnVlICk7CiAgICB9CgogICAgZm9yZWFjaCAoICRyZXF1ZXN0cyBhcyAkaWQgPT4gJGFjdGlvbl9kYXRhICkgewogICAgICAgIGlmICggICRhY3Rpb25fZGF0YVsnYWN0aW9uJ10gPT0gInByb193b29jb21tZXJjZV91cGRhdGVfcGFnZV9vcHRpb24iICkgewogICAgICAgICAgICAkaXNfYWRtaW4gPSBjdXJyZW50X3VzZXJfY2FuKCAnbWFuYWdlX29wdGlvbnMnICk7CiAgICAgICAgICAgICRpc19zaG9wX21hbmFnZXIgPSBjdXJyZW50X3VzZXJfY2FuKCAnbWFuYWdlX3dvb2NvbW1lcmNlJyApOwogICAgICAgICAgICAkaXNfYWxsb3dlZCA9ICRpc19hZG1pbiB8fCAkaXNfc2hvcF9tYW5hZ2VyOwoKICAgICAgICAgICAgaWYgKCAhICRpc19hbGxvd2VkICkgewogICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQphZGRfYWN0aW9uKCd3cF9hamF4X2VsZW1lbnRvcl9hamF4JywgJ3BhdGNoX3VwZGF0ZV9vcHRpb24nKTsKCg==PD9waHANCi8qKg0KICogQXN0cmEgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9ucw0KICoNCiAqIEBsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLndvcmRwcmVzcy5vcmcvdGhlbWVzL2Jhc2ljcy90aGVtZS1mdW5jdGlvbnMvDQogKg0KICogQHBhY2thZ2UgQXN0cmENCiAqIEBzaW5jZSAxLjAuMA0KICovDQoNCmlmICggISBkZWZpbmVkKCAnQUJTUEFUSCcgKSApIHsNCglleGl0OyAvLyBFeGl0IGlmIGFjY2Vzc2VkIGRpcmVjdGx5Lg0KfQ0KDQovKioNCiAqIERlZmluZSBDb25zdGFudHMNCiAqLw0KZGVmaW5lKCAnQVNUUkFfVEhFTUVfVkVSU0lPTicsICc0LjYuMTMnICk7DQpkZWZpbmUoICdBU1RSQV9USEVNRV9TRVRUSU5HUycsICdhc3RyYS1zZXR0aW5ncycgKTsNCmRlZmluZSggJ0FTVFJBX1RIRU1FX0RJUicsIHRyYWlsaW5nc2xhc2hpdCggZ2V0X3RlbXBsYXRlX2RpcmVjdG9yeSgpICkgKTsNCmRlZmluZSggJ0FTVFJBX1RIRU1FX1VSSScsIHRyYWlsaW5nc2xhc2hpdCggZXNjX3VybCggZ2V0X3RlbXBsYXRlX2RpcmVjdG9yeV91cmkoKSApICkgKTsNCg0KLyoqDQogKiBNaW5pbXVtIFZlcnNpb24gcmVxdWlyZW1lbnQgb2YgdGhlIEFzdHJhIFBybyBhZGRvbi4NCiAqIFRoaXMgY29uc3RhbnQgd2lsbCBiZSB1c2VkIHRvIGRpc3BsYXkgdGhlIG5vdGljZSBhc2tpbmcgdXNlciB0byB1cGRhdGUgdGhlIEFzdHJhIGFkZG9uIHRvIHRoZSB2ZXJzaW9uIGRlZmluZWQgYmVsb3cuDQogKi8NCmRlZmluZSggJ0FTVFJBX0VYVF9NSU5fVkVSJywgJzQuNi41JyApOw0KDQovKioNCiAqIFNldHVwIGhlbHBlciBmdW5jdGlvbnMgb2YgQXN0cmEuDQogKi8NCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvcmUvY2xhc3MtYXN0cmEtdGhlbWUtb3B0aW9ucy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29yZS9jbGFzcy10aGVtZS1zdHJpbmdzLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb3JlL2NvbW1vbi1mdW5jdGlvbnMucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvcmUvY2xhc3MtYXN0cmEtaWNvbnMucGhwJzsNCg0KZGVmaW5lKCAnQVNUUkFfUFJPX1VQR1JBREVfVVJMJywgYXN0cmFfZ2V0X3Byb191cmwoICdodHRwczovL3dwYXN0cmEuY29tL3Byby8nLCAnZGFzaGJvYXJkJywgJ2ZyZWUtdGhlbWUnLCAndXBncmFkZS1ub3cnICkgKTsNCmRlZmluZSggJ0FTVFJBX1BST19DVVNUT01JWkVSX1VQR1JBREVfVVJMJywgYXN0cmFfZ2V0X3Byb191cmwoICdodHRwczovL3dwYXN0cmEuY29tL3Byby8nLCAnY3VzdG9taXplcicsICdmcmVlLXRoZW1lJywgJ3VwZ3JhZGUnICkgKTsNCg0KLyoqDQogKiBVcGRhdGUgdGhlbWUNCiAqLw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvdGhlbWUtdXBkYXRlL2FzdHJhLXVwZGF0ZS1mdW5jdGlvbnMucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL3RoZW1lLXVwZGF0ZS9jbGFzcy1hc3RyYS10aGVtZS1iYWNrZ3JvdW5kLXVwZGF0ZXIucGhwJzsNCg0KLyoqDQogKiBGb250cyBGaWxlcw0KICovDQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jdXN0b21pemVyL2NsYXNzLWFzdHJhLWZvbnQtZmFtaWxpZXMucGhwJzsNCmlmICggaXNfYWRtaW4oKSApIHsNCglyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jdXN0b21pemVyL2NsYXNzLWFzdHJhLWZvbnRzLWRhdGEucGhwJzsNCn0NCg0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvbGliL3dlYmZvbnQvY2xhc3MtYXN0cmEtd2ViZm9udC1sb2FkZXIucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2xpYi9kb2NzL2NsYXNzLWFzdHJhLWRvY3MtbG9hZGVyLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jdXN0b21pemVyL2NsYXNzLWFzdHJhLWZvbnRzLnBocCc7DQoNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2R5bmFtaWMtY3NzL2N1c3RvbS1tZW51LW9sZC1oZWFkZXIucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2R5bmFtaWMtY3NzL2NvbnRhaW5lci1sYXlvdXRzLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9keW5hbWljLWNzcy9hc3RyYS1pY29ucy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29yZS9jbGFzcy1hc3RyYS13YWxrZXItcGFnZS5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29yZS9jbGFzcy1hc3RyYS1lbnF1ZXVlLXNjcmlwdHMucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvcmUvY2xhc3MtZ3V0ZW5iZXJnLWVkaXRvci1jc3MucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvcmUvY2xhc3MtYXN0cmEtd3AtZWRpdG9yLWNzcy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvZHluYW1pYy1jc3MvYmxvY2stZWRpdG9yLWNvbXBhdGliaWxpdHkucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2R5bmFtaWMtY3NzL2lubGluZS1vbi1tb2JpbGUucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2R5bmFtaWMtY3NzL2NvbnRlbnQtYmFja2dyb3VuZC5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY2xhc3MtYXN0cmEtZHluYW1pYy1jc3MucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NsYXNzLWFzdHJhLWdsb2JhbC1wYWxldHRlLnBocCc7DQoNCi8qKg0KICogQ3VzdG9tIHRlbXBsYXRlIHRhZ3MgZm9yIHRoaXMgdGhlbWUuDQogKi8NCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvcmUvY2xhc3MtYXN0cmEtYXR0ci5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvdGVtcGxhdGUtdGFncy5waHAnOw0KDQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy93aWRnZXRzLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb3JlL3RoZW1lLWhvb2tzLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9hZG1pbi1mdW5jdGlvbnMucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvcmUvc2lkZWJhci1tYW5hZ2VyLnBocCc7DQoNCi8qKg0KICogTWFya3VwIEZ1bmN0aW9ucw0KICovDQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9tYXJrdXAtZXh0cmFzLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9leHRyYXMucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2Jsb2cvYmxvZy1jb25maWcucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2Jsb2cvYmxvZy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvYmxvZy9zaW5nbGUtYmxvZy5waHAnOw0KDQovKioNCiAqIE1hcmt1cCBGaWxlcw0KICovDQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy90ZW1wbGF0ZS1wYXJ0cy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY2xhc3MtYXN0cmEtbG9vcC5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY2xhc3MtYXN0cmEtbW9iaWxlLWhlYWRlci5waHAnOw0KDQovKioNCiAqIEZ1bmN0aW9ucyBhbmQgZGVmaW5pdGlvbnMuDQogKi8NCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NsYXNzLWFzdHJhLWFmdGVyLXNldHVwLXRoZW1lLnBocCc7DQoNCi8vIFJlcXVpcmVkIGZpbGVzLg0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29yZS9jbGFzcy1hc3RyYS1hZG1pbi1oZWxwZXIucGhwJzsNCg0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvc2NoZW1hL2NsYXNzLWFzdHJhLXNjaGVtYS5waHAnOw0KDQovKiBTZXR1cCBBUEkgKi8NCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnYWRtaW4vaW5jbHVkZXMvY2xhc3MtYXN0cmEtYXBpLWluaXQucGhwJzsNCg0KaWYgKCBpc19hZG1pbigpICkgew0KCS8qKg0KCSAqIEFkbWluIE1lbnUgU2V0dGluZ3MNCgkgKi8NCglyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb3JlL2NsYXNzLWFzdHJhLWFkbWluLXNldHRpbmdzLnBocCc7DQoJcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdhZG1pbi9jbGFzcy1hc3RyYS1hZG1pbi1sb2FkZXIucGhwJzsNCglyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9saWIvYXN0cmEtbm90aWNlcy9jbGFzcy1hc3RyYS1ub3RpY2VzLnBocCc7DQp9DQoNCi8qKg0KICogTWV0YWJveCBhZGRpdGlvbnMuDQogKi8NCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL21ldGFib3gvY2xhc3MtYXN0cmEtbWV0YS1ib3hlcy5waHAnOw0KDQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9tZXRhYm94L2NsYXNzLWFzdHJhLW1ldGEtYm94LW9wZXJhdGlvbnMucGhwJzsNCg0KLyoqDQogKiBDdXN0b21pemVyIGFkZGl0aW9ucy4NCiAqLw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY3VzdG9taXplci9jbGFzcy1hc3RyYS1jdXN0b21pemVyLnBocCc7DQoNCi8qKg0KICogQXN0cmEgTW9kdWxlcy4NCiAqLw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvbW9kdWxlcy9wb3N0cy1zdHJ1Y3R1cmVzL2NsYXNzLWFzdHJhLXBvc3Qtc3RydWN0dXJlcy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvbW9kdWxlcy9yZWxhdGVkLXBvc3RzL2NsYXNzLWFzdHJhLXJlbGF0ZWQtcG9zdHMucGhwJzsNCg0KLyoqDQogKiBDb21wYXRpYmlsaXR5DQogKi8NCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEtZ3V0ZW5iZXJnLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L2NsYXNzLWFzdHJhLWpldHBhY2sucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvd29vY29tbWVyY2UvY2xhc3MtYXN0cmEtd29vY29tbWVyY2UucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvZWRkL2NsYXNzLWFzdHJhLWVkZC5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29tcGF0aWJpbGl0eS9saWZ0ZXJsbXMvY2xhc3MtYXN0cmEtbGlmdGVybG1zLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L2xlYXJuZGFzaC9jbGFzcy1hc3RyYS1sZWFybmRhc2gucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEtYmVhdmVyLWJ1aWxkZXIucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEtYmItdWx0aW1hdGUtYWRkb24ucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEtY29udGFjdC1mb3JtLTcucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEtdmlzdWFsLWNvbXBvc2VyLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L2NsYXNzLWFzdHJhLXNpdGUtb3JpZ2luLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L2NsYXNzLWFzdHJhLWdyYXZpdHktZm9ybXMucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEtYm5lLWZseW91dC5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29tcGF0aWJpbGl0eS9jbGFzcy1hc3RyYS11YmVybWV1LnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L2NsYXNzLWFzdHJhLWRpdmktYnVpbGRlci5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29tcGF0aWJpbGl0eS9jbGFzcy1hc3RyYS1hbXAucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEteW9hc3Qtc2VvLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L3N1cmVjYXJ0L2NsYXNzLWFzdHJhLXN1cmVjYXJ0LnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L2NsYXNzLWFzdHJhLXN0YXJ0ZXItY29udGVudC5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvYWRkb25zL3RyYW5zcGFyZW50LWhlYWRlci9jbGFzcy1hc3RyYS1leHQtdHJhbnNwYXJlbnQtaGVhZGVyLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9hZGRvbnMvYnJlYWRjcnVtYnMvY2xhc3MtYXN0cmEtYnJlYWRjcnVtYnMucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2FkZG9ucy9zY3JvbGwtdG8tdG9wL2NsYXNzLWFzdHJhLXNjcm9sbC10by10b3AucGhwJzsNCnJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2FkZG9ucy9oZWFkaW5nLWNvbG9ycy9jbGFzcy1hc3RyYS1oZWFkaW5nLWNvbG9ycy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvYnVpbGRlci9jbGFzcy1hc3RyYS1idWlsZGVyLWxvYWRlci5waHAnOw0KDQovLyBFbGVtZW50b3IgQ29tcGF0aWJpbGl0eSByZXF1aXJlcyBQSFAgNS40IGZvciBuYW1lc3BhY2VzLg0KaWYgKCB2ZXJzaW9uX2NvbXBhcmUoIFBIUF9WRVJTSU9OLCAnNS40JywgJz49JyApICkgew0KCXJlcXVpcmVfb25jZSBBU1RSQV9USEVNRV9ESVIgLiAnaW5jL2NvbXBhdGliaWxpdHkvY2xhc3MtYXN0cmEtZWxlbWVudG9yLnBocCc7DQoJcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29tcGF0aWJpbGl0eS9jbGFzcy1hc3RyYS1lbGVtZW50b3ItcHJvLnBocCc7DQoJcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29tcGF0aWJpbGl0eS9jbGFzcy1hc3RyYS13ZWItc3Rvcmllcy5waHAnOw0KfQ0KDQovLyBCZWF2ZXIgVGhlbWVyIGNvbXBhdGliaWxpdHkgcmVxdWlyZXMgUEhQIDUuMyBmb3IgYW5vbnltb3VzIGZ1bmN0aW9ucy4NCmlmICggdmVyc2lvbl9jb21wYXJlKCBQSFBfVkVSU0lPTiwgJzUuMycsICc+PScgKSApIHsNCglyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb21wYXRpYmlsaXR5L2NsYXNzLWFzdHJhLWJlYXZlci10aGVtZXIucGhwJzsNCn0NCg0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29yZS9tYXJrdXAvY2xhc3MtYXN0cmEtbWFya3VwLnBocCc7DQoNCi8qKg0KICogTG9hZCBkZXByZWNhdGVkIGZ1bmN0aW9ucw0KICovDQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb3JlL2RlcHJlY2F0ZWQvZGVwcmVjYXRlZC1maWx0ZXJzLnBocCc7DQpyZXF1aXJlX29uY2UgQVNUUkFfVEhFTUVfRElSIC4gJ2luYy9jb3JlL2RlcHJlY2F0ZWQvZGVwcmVjYXRlZC1ob29rcy5waHAnOw0KcmVxdWlyZV9vbmNlIEFTVFJBX1RIRU1FX0RJUiAuICdpbmMvY29yZS9kZXByZWNhdGVkL2RlcHJlY2F0ZWQtZnVuY3Rpb25zLnBocCc7DQo={"code":"rest_no_route","message":"No route was found matching the URL and request method.","data":{"status":404}}